Skip to content

refactor: full app rehaul — route-based architecture, component extraction, and UI unification#61

Merged
aramb-dev merged 61 commits into
masterfrom
refactor/full-rehaul
Apr 27, 2026
Merged

refactor: full app rehaul — route-based architecture, component extraction, and UI unification#61
aramb-dev merged 61 commits into
masterfrom
refactor/full-rehaul

Conversation

@aramb-dev
Copy link
Copy Markdown
Owner

@aramb-dev aramb-dev commented Apr 27, 2026

Summary

A ground-up structural refactor of the Transcriptr app across 7 phases, followed by incremental feature and polish work. Net result: ~3,400 lines removed, clear route-based architecture, no more mobile/desktop component duplication, and a significantly smaller TranscriptionStudio.

What changed

Architecture (Phases 1–3)

  • Migrated from a monolithic single-page app to a proper Next.js App Router layout
  • New routes: / (upload), /transcribe/[id] (processing + results), /studio/[id] (full studio), /history, /about, /errors/[code]
  • Unified Header with responsive nav + mobile drawer replaces separate
    MobileHeader / MobileFooter / MainLayout components

Component extraction (Phase 4)

  • Split the 1,583-line TranscriptionStudio big component into focused modules: AudioPlayer, FileDetails, TranscriptStatistics, ExportControls, EnhancedTranscript, KeyboardShortcutsModal
  • Extracted useAudioPlayer hook; TranscriptionStudio is now ~240 lines

Mobile/desktop deduplication (Phase 5)

  • Deleted MobileChangelog, MobileFeedbackForm, MobileFeedbackModals, and all mobile-only CSS files
  • Replaced with single responsive components

Design tokens (Phase 6)

  • Updated CSS variables: warm off-white light, deep navy-black dark
  • Added semantic success/warning tokens
  • Removed dead V3AnnouncementModal and ChangelogModal

Cleanup (Phase 7)

  • Removed verbose console.log calls from client code
  • Deleted TranscriptionHistory.tsx, sequential-reveal-list.tsx, and other
    dead files

Post-refactor features and fixes

  • Feedback: replaced legacy flow with embedded Tally form; modal now mounts from root layout (available app-wide); scaled iframe to viewport height
  • Analytics: swapped custom stack for Vercel Web Analytics; strips query strings before event tracking; preserves browser opt-out control
  • Studio audio: API now returns AssemblyAI audio URL as source of truth; studio and transcribe pages prefer backend URL over stale client cache
  • Legal pages: rewritten as text-first documents aligned to current product (AssemblyAI, Firebase, Tally, Vercel)
  • Docs/changelog: simplified layouts to match site-wide design
  • Mobile nav: top tabs with active More menu for secondary routes
  • Dependencies: refreshed Next.js, React, lucide-react, and tooling

Stats

  • 79 files changed
  • ~5,600 insertions, ~9,000 deletions
  • Net: −3,400 lines

Verified

  • bun x tsc --noEmit --ignoreDeprecations 6.0 passes
  • bun run build passes

Summary by CodeRabbit

  • New Features

    • New About, Documentation, Changelog, History, Studio, Transcribe, Privacy, Terms pages; improved 404/500/global error screens
    • Upload-first transcription flow, persistent searchable history, studio with audio player, enhanced transcript (search/karaoke), export/download (SRT/VTT/MD/DOCX/JSON/CSV), keyboard shortcuts, transcript statistics
  • Bug Fixes

    • More robust polling, clearer error/retry flows, improved failure/recovery UX
  • Chores

    • Dependency upgrades, tooling migrated to Biome, analytics switched to Vercel, privacy/feedback wording and theme token updates

Loading
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants